package view.backing.producto;

import chemtools_logica.Beans.AlmacenBean;
import chemtools_logica.Beans.ContenedoresBean;
import chemtools_logica.Beans.EmpresaBean;
import chemtools_logica.Beans.EventoxinsumoBean;
import chemtools_logica.Beans.EventoxproductoBean;
import chemtools_logica.Beans.InsumoBean;
import chemtools_logica.Beans.MedidaBean;
import chemtools_logica.Beans.OrdenproduccionBean;
import chemtools_logica.Beans.ProductoBean;
import chemtools_logica.Beans.TipoinsumoBean;
import chemtools_logica.Beans.TipoproductoBean;

import chemtools_logica.Beans.UsuarioBean;

import chemtools_logica.LN.IR.LN_SFAlmacenRemote;
import chemtools_logica.LN.IR.LN_SFContenedoresRemote;
import chemtools_logica.LN.IR.LN_SFEmpresaRemote;
import chemtools_logica.LN.IR.LN_SFMedidaRemote;
import chemtools_logica.LN.IR.LN_SFProductoRemote;

import chemtools_logica.LN.IR.LN_SFTipoinsumoRemote;
import chemtools_logica.LN.IR.LN_SFTipoproductoRemote;

import java.math.BigDecimal;

import java.text.SimpleDateFormat;

import java.util.ArrayList;
import java.util.Date;
import java.util.Hashtable;

import java.util.List;

import javax.annotation.PostConstruct;

import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import javax.servlet.http.HttpSession;

import oracle.adf.view.rich.component.rich.RichForm;
import oracle.adf.view.rich.component.rich.RichPopup;
import oracle.adf.view.rich.component.rich.data.RichTable;
import oracle.adf.view.rich.component.rich.input.RichInputDate;
import oracle.adf.view.rich.component.rich.input.RichSelectOneChoice;
import oracle.adf.view.rich.component.rich.layout.RichPanelFormLayout;
import oracle.adf.view.rich.component.rich.layout.RichPanelGridLayout;
import oracle.adf.view.rich.component.rich.nav.RichButton;

import oracle.adf.view.rich.component.rich.output.RichOutputLabel;

import org.apache.myfaces.trinidad.event.SelectionEvent;

import view.backing.Utils.Utils;

public class Frm_producto {
    
    private LN_SFProductoRemote lN_SFProductoRemote;
    private LN_SFEmpresaRemote lN_SFEmpresaRemote;
    private LN_SFTipoproductoRemote lN_SFTipoproductoRemote;
    private LN_SFAlmacenRemote lN_SFAlmacenRemote;
    
    private LN_SFMedidaRemote lN_SFMedidaRemote;
    private LN_SFContenedoresRemote lN_SFContenedoresRemote;
    
    private bSessionScopeBeanproducto sessionScopeBeanproducto = new bSessionScopeBeanproducto();
    private RichForm form;
    private RichTable tb_Producto;
    private RichPanelFormLayout pa_Producto;
    private RichPanelGridLayout pf_Busqueda;
    private RichInputDate dt_fCreacionMin;
    private RichInputDate dt_fCreacionMax;
    private RichSelectOneChoice calidadInputNuevo;
    private RichPopup pop_addProducto;
    private RichPopup pop_editProducto;
    private RichButton btnNuevoProducto;
    private RichButton btnEditar;
    private RichOutputLabel directorio;
    private RichOutputLabel cantProductos;
    private RichPopup pop_cambioAlmacen;
    private RichButton btnCambioAlmacen;
    private RichPopup pop_addtProducto;
    private RichPopup popNuevoContenedor;
    private RichPopup popnuevaMedida;
    private RichButton btnNuevoContenedor;
    private RichButton btnNuevaMedida;
    private RichSelectOneChoice inputnuevoTInsumoMedida;
    private RichSelectOneChoice inputnuevoTInsumoContenedor;
    private RichSelectOneChoice contenedorInputBusqueda;
    private RichSelectOneChoice umedidaInputBusqueda;
    private RichButton btnNuevotProducto;
    private RichSelectOneChoice inputtInsumoBusqueda;
    private RichSelectOneChoice inputtInsumoNuevo;
    private RichPanelFormLayout layoutDetalleTProducto;

    public Frm_producto() {
       
    }

    @PostConstruct
    public void methodInvokeOncedOnPageLoad(){
        try{
            final Context context = getInitialContext();
            lN_SFAlmacenRemote = (LN_SFAlmacenRemote) context.lookup("map-LN_SFAlmacen#chemtools_logica.LN.IR.LN_SFAlmacenRemote");
            lN_SFProductoRemote = (LN_SFProductoRemote) context.lookup("map-LN_SFProducto#chemtools_logica.LN.IR.LN_SFProductoRemote");
            lN_SFEmpresaRemote = (LN_SFEmpresaRemote) context.lookup("map-LN_SFEmpresa#chemtools_logica.LN.IR.LN_SFEmpresaRemote");
            lN_SFTipoproductoRemote = (LN_SFTipoproductoRemote) context.lookup("map-LN_SFTipoproducto#chemtools_logica.LN.IR.LN_SFTipoproductoRemote");
            lN_SFMedidaRemote = (LN_SFMedidaRemote) context.lookup("map-LN_SFMedida#chemtools_logica.LN.IR.LN_SFMedidaRemote");
            lN_SFContenedoresRemote = (LN_SFContenedoresRemote) context.lookup("map-LN_SFContenedores#chemtools_logica.LN.IR.LN_SFContenedoresRemote");
        }catch(Exception e){
            
        }
        
        HttpSession sesion = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
        UsuarioBean usuario = (UsuarioBean) sesion.getAttribute("usuario");
        sessionScopeBeanproducto.setUsuario(usuario);
        
        sessionScopeBeanproducto.setListaAlmacenActivo(lN_SFAlmacenRemote.getAllAlmacenes1());
        
        //sessionScopeBeanproducto.setListaProducto(lN_SFProductoRemote.getAllProducto());
        sessionScopeBeanproducto.setListaTipoProducto(llenaTipoProducto());
        sessionScopeBeanproducto.setListaEmpresa(llenaEmpresa());
        
        sessionScopeBeanproducto.setListaMedida(this.llenarmedidaComno());
        sessionScopeBeanproducto.setListaTipoProducto(this.llenaTipoProducto());
        sessionScopeBeanproducto.setListaContenedores(this.llenarcontenedoresComno());
        sessionScopeBeanproducto.setListaEstados(this.llenarEstados());
        sessionScopeBeanproducto.setListaAlmacen(this.llenarAlmacen());
    }
    
    public void traeProductos(ActionEvent event){
        int idAlmacen = sessionScopeBeanproducto.getAlmacenSeleccionado().getIdAlmacen();
        sessionScopeBeanproducto.setIdalmacenSelec(idAlmacen);
        
        List<ProductoBean> lsitaProducto = lN_SFProductoRemote.getProductosbyAlmacen(idAlmacen);
        
        sessionScopeBeanproducto.setListaProducto(lsitaProducto);
        getTb_Producto().setValue(lsitaProducto);
        Utils.addTarget(getTb_Producto());
        
        getBtnEditar().setDisabled(true);
        Utils.addTarget(getBtnEditar());
        
        getBtnNuevoProducto().setDisabled(false);
        Utils.addTarget(getBtnNuevoProducto());
        
        sessionScopeBeanproducto.setDirectorio(sessionScopeBeanproducto.getAlmacenSeleccionado().getNombre());
        Utils.addTarget(getDirectorio());
        Utils.addTarget(getCantProductos());
        
        Utils.clearRowSelection(getTb_Producto());
    }
    
    public void limpiaryRefrescar(ActionEvent event){
        
        sessionScopeBeanproducto.setCodigoBuscar(null);
        sessionScopeBeanproducto.setEstadoBuscar(-1);
        sessionScopeBeanproducto.setCalidadBuscar(-1);
        sessionScopeBeanproducto.setNombreBuscar(null);
        sessionScopeBeanproducto.setContenedorBuscar(-1);
        sessionScopeBeanproducto.setMedidaBuscar(-1);
        sessionScopeBeanproducto.setTipoProductoBuscar(-1);
        getDt_fCreacionMin().setValue("");
        getDt_fCreacionMax().setValue("");
        sessionScopeBeanproducto.setFechaCreaciondMax(null);
        sessionScopeBeanproducto.setEmpresaBuscar(-1);
        
        
        sessionScopeBeanproducto.setListaProducto(lN_SFProductoRemote.getAllProducto());
        getTb_Producto().setValue(sessionScopeBeanproducto.getListaProducto());
        Utils.clearRowSelection(getTb_Producto());
        
        Utils.addTarget(getTb_Producto());
        Utils.addTarget(getPf_Busqueda());
        
        sessionScopeBeanproducto.setAlmacenSeleccionado(new AlmacenBean());
        sessionScopeBeanproducto.setIdalmacenSelec(0);
        sessionScopeBeanproducto.setDirectorio("PRODUCTOS GENERALES");
        Utils.addTarget(getDirectorio());
        Utils.addTarget(getCantProductos());
        
        //botones
        getBtnEditar().setDisabled(true);
        Utils.addTarget(getBtnEditar());
        getBtnNuevoProducto().setDisabled(true);
        Utils.addTarget(getBtnNuevoProducto());
        getBtnCambioAlmacen().setDisabled(true);
        Utils.addTarget(getBtnCambioAlmacen());
        
    }
    
    public void buscarProducto(ActionEvent event){
        
        int idAlmacen = sessionScopeBeanproducto.getIdalmacenSelec();
        
        String codigo = sessionScopeBeanproducto.getCodigoBuscar();
        int estado = sessionScopeBeanproducto.getEstadoBuscar();
        int calidad= sessionScopeBeanproducto.getCalidadBuscar();
        Date fechaMinima= sessionScopeBeanproducto.getFechaCreaciondMin();
        Date fechaMaxima= sessionScopeBeanproducto.getFechaCreaciondMax();
        int uMedida = sessionScopeBeanproducto.getMedidaBuscar();
        int contenedor = sessionScopeBeanproducto.getContenedorBuscar();
        int tipoProducto = sessionScopeBeanproducto.getTipoProductoBuscar();
        String nombre = sessionScopeBeanproducto.getNombreBuscar();
        int empresa = sessionScopeBeanproducto.getEmpresaBuscar();
        
        ProductoBean tProducto = new ProductoBean();
        
        tProducto.setIdProducto(codigo);
        tProducto.setEstado(estado);
        tProducto.setCalidad(calidad);
        tProducto.setFechaCreaciondMax(fechaMaxima);
        tProducto.setFechaCreaciondMin(fechaMinima);
        tProducto.setIdMedida(uMedida);
        tProducto.setIdContenedores(contenedor);
        tProducto.setIdtipoProducto(tipoProducto);
        tProducto.setComentario(nombre);
        tProducto.setIdAlmacen(idAlmacen);
        tProducto.setIdEmpresa(empresa);
        
         sessionScopeBeanproducto.setListaProducto(new ArrayList<ProductoBean>());
         sessionScopeBeanproducto.setListaProducto(lN_SFProductoRemote.busquedaProducto(tProducto));
         getTb_Producto().setValue(sessionScopeBeanproducto.getListaProducto());
         Utils.addTarget(getTb_Producto()); 
         Utils.clearRowSelection(getTb_Producto());
         Utils.addTarget(getCantProductos());
         
         //botones
         
         if(idAlmacen != 0){
             getBtnEditar().setDisabled(false);
             getBtnNuevoProducto().setDisabled(false);
             Utils.addTargetMany(getBtnEditar(),getBtnNuevoProducto());
         }else{
             getBtnEditar().setDisabled(true);
             getBtnNuevoProducto().setDisabled(true);
             Utils.addTargetMany(getBtnEditar(),getBtnNuevoProducto());
         }
      
    }
    
      public void productoSelect(SelectionEvent se){
          RichTable t = (RichTable)se.getSource();
          ProductoBean beanProducto = (ProductoBean) t.getSelectedRowData();
          sessionScopeBeanproducto.setProductoSeleccionado(beanProducto);
          
          if(sessionScopeBeanproducto.getIdalmacenSelec() != 0){
              if(beanProducto.getEstado() != 3 || beanProducto.getEstado() != 0){
                  getBtnEditar().setDisabled(false);
                  Utils.addTarget(getBtnEditar());
                  getBtnCambioAlmacen().setDisabled(false);
                  Utils.addTarget(getBtnCambioAlmacen());
              }else{
                  getBtnEditar().setDisabled(true);
                  Utils.addTarget(getBtnEditar());
                  getBtnCambioAlmacen().setDisabled(true);
                  Utils.addTarget(getBtnCambioAlmacen());
              }
          }
      }
      
      public void mostrarPopAgregar(ActionEvent event){
          
          sessionScopeBeanproducto.setCodigoNuevo("");
          sessionScopeBeanproducto.setComentarioNuevo("");
          sessionScopeBeanproducto.setCalidadnuevo(0);
          sessionScopeBeanproducto.setTipoProductoNuevo(0);
          sessionScopeBeanproducto.setEmpresaNuevo(0);
          sessionScopeBeanproducto.setFCaducacionNuevo(null);
          sessionScopeBeanproducto.setContenidoNuevo("");
          
          Utils.showPopUpMIDDLE(getPop_addProducto());
      }
      
      public void agregarNuevoProducto(ActionEvent event){
          String comentario = sessionScopeBeanproducto.getComentarioNuevo();
          String codigo = sessionScopeBeanproducto.getCodigoNuevo();
          int calidad = sessionScopeBeanproducto.getCalidadnuevo();
          int tInsumo = sessionScopeBeanproducto.getTipoProductoNuevo();
          int empresa = sessionScopeBeanproducto.getEmpresaNuevo();
          Date fCaducacion = sessionScopeBeanproducto.getFCaducacionNuevo();
          String contenido = sessionScopeBeanproducto.getContenidoNuevo();
          
          int almacen = sessionScopeBeanproducto.getIdalmacenSelec(); 
          int usuario = sessionScopeBeanproducto.getUsuario().getIdUsuario();
          
          ProductoBean beanProducto = new ProductoBean();
          EventoxproductoBean eventoxproducto = new EventoxproductoBean();
          
          beanProducto.setIdProducto(codigo);
          beanProducto.setCalidad(calidad);
          beanProducto.setComentario(comentario);
          beanProducto.setEstado(1);
          beanProducto.setIdEmpresa(empresa);
          beanProducto.setIdtipoProducto(tInsumo);
          beanProducto.setImagen("");
          beanProducto.setTiempo_Caducacion(fCaducacion);
          
          BigDecimal cont = new BigDecimal(contenido);
          
          beanProducto.setContenido(cont);
          
          eventoxproducto.setProducto(beanProducto);
          eventoxproducto.setIdEvento(5);
          eventoxproducto.setIdAlmacen(almacen);
          eventoxproducto.setIdUsuario(usuario);
          eventoxproducto.setFecha_Evento(new Date());
          eventoxproducto.setContenido(cont);
          
          lN_SFProductoRemote.insertarProducto(eventoxproducto);
          limpiaryRefrescar(null);
          getPop_addProducto().hide();
          Utils.showMessage("Se Ingreso un nuevo Producto", null, 2);
      }
      
      public void mostrarPopEditar(ActionEvent event){
          ProductoBean producto = sessionScopeBeanproducto.getProductoSeleccionado();
          
          sessionScopeBeanproducto.setCambioHecho(false);
          
          sessionScopeBeanproducto.setCodigoEdit(producto.getIdProducto());
          sessionScopeBeanproducto.setComentarioEdit(producto.getComentario());
          sessionScopeBeanproducto.setContenedorEdit(producto.getDescripcionContenedores());
          sessionScopeBeanproducto.setEmpresaEdit(producto.getNombreEmpresa());
          sessionScopeBeanproducto.setEstadoEdit(producto.getEstado());
          sessionScopeBeanproducto.setTipoProductoEdit(producto.getDescripciontipoProducto());
          sessionScopeBeanproducto.setCalidadEdit(producto.getCalidad());
          
          Utils.showPopUpMIDDLE(getPop_editProducto());
      }
      
      public void editarProducto(ActionEvent event){
          if(sessionScopeBeanproducto.isCambioHecho()){
              ProductoBean productoBean = sessionScopeBeanproducto.getProductoSeleccionado();
              productoBean.setEstado(sessionScopeBeanproducto.getEstadoEdit());
              
              EventoxproductoBean eventoxproducto = new EventoxproductoBean();
              
              eventoxproducto.setProducto(productoBean);
              eventoxproducto.setFecha_Evento(new Date());
              eventoxproducto.setIdEvento(6);
              eventoxproducto.setIdAlmacen(sessionScopeBeanproducto.getIdalmacenSelec());
              eventoxproducto.setIdUsuario(sessionScopeBeanproducto.getUsuario().getIdUsuario());
              eventoxproducto.setContenido(lN_SFProductoRemote.getContenidoEventoProducto(productoBean.getIdProducto()));
              
              lN_SFProductoRemote.updateProducto(eventoxproducto);
              getPop_editProducto().hide();
              sessionScopeBeanproducto.setCambioHecho(false);
              
              limpiaryRefrescar(null);
          }
          else{
              getPop_editProducto().hide();
          } 
      }
      
      public void verificarCambiosEditTinsumo(ValueChangeEvent vce){
            sessionScopeBeanproducto.setCambioHecho(true);
      }
    
      public void mostrarpopAgregar(ActionEvent event){
        sessionScopeBeanproducto.setCalidadnuevo(0);
        Utils.showPopUpMIDDLE(getPop_addProducto());
    }
      
      public void mostrarPopCambioAlmacen(ActionEvent event){
          sessionScopeBeanproducto.setAlmacenEdit(sessionScopeBeanproducto.getIdalmacenSelec());
          Utils.showPopUpAFTER_START(getPop_cambioAlmacen(), getBtnCambioAlmacen());
      }
      
        public void verificarCambiosCambioAlmacen(ValueChangeEvent vce){
              sessionScopeBeanproducto.setCambioHecho(true);
        }
        
        public void cambiarAlmacen(ActionEvent event){
            ProductoBean beanProduco = sessionScopeBeanproducto.getProductoSeleccionado();
            
            if(sessionScopeBeanproducto.isCambioHecho()){
                
                boolean tOF = lN_SFAlmacenRemote.canInsertAlmacen1(sessionScopeBeanproducto.getAlmacenEdit());
                
                if(tOF){
                    int usuario = sessionScopeBeanproducto.getUsuario().getIdUsuario();
                    int almacenEntrada = sessionScopeBeanproducto.getAlmacenEdit();
                    int almacenSalida = sessionScopeBeanproducto.getIdalmacenSelec();
                    
                    Date fechaSalida  = new Date();
                    Date fechaEntrada = Utils.addTimeBySecondsDemo(fechaSalida, 2);
                    
                    
                    EventoxproductoBean eProductoSalida = new EventoxproductoBean();
                        eProductoSalida.setFecha_Evento(fechaSalida);
                        eProductoSalida.setIdEvento(8);
                        eProductoSalida.setIdUsuario(usuario);
                        eProductoSalida.setIdAlmacen(almacenSalida);
                        eProductoSalida.setProducto(beanProduco);
                        eProductoSalida.setContenido(lN_SFProductoRemote.getContenidoEventoProducto(beanProduco.getIdProducto()));
                    
                    EventoxproductoBean eProductoEntrada = new EventoxproductoBean();
                        eProductoEntrada.setFecha_Evento(fechaEntrada);
                        eProductoEntrada.setIdEvento(7);
                        eProductoEntrada.setIdUsuario(usuario);
                        eProductoEntrada.setIdAlmacen(almacenEntrada);
                        eProductoEntrada.setProducto(beanProduco);
                        eProductoEntrada.setContenido(lN_SFProductoRemote.getContenidoEventoProducto(beanProduco.getIdProducto()));
                        
                    List<EventoxproductoBean> listaEvento = new ArrayList<EventoxproductoBean>();
                        listaEvento.add(eProductoSalida);
                        listaEvento.add(eProductoEntrada);          
                    
                    lN_SFProductoRemote.cambioPRoductoAlmacen(listaEvento);
                    
                    sessionScopeBeanproducto.setCambioHecho(false);
                    sessionScopeBeanproducto.setIdalmacenSelec(0);
                    this.limpiaryRefrescar(null);
                    
                    getPop_cambioAlmacen().hide();
                    sessionScopeBeanproducto.setDirectorio("PRODUCTOS GENERALES");
                    Utils.addTarget(getCantProductos());
                    Utils.addTarget(getDirectorio());
                    
                    Utils.showMessage("Se cambio satisfactoriamente de almacen", null, 2);
                }
                else{
                    getPop_cambioAlmacen().hide();
                    sessionScopeBeanproducto.setCambioHecho(false);
                    sessionScopeBeanproducto.setAlmacenEdit(sessionScopeBeanproducto.getIdalmacenSelec());
                    Utils.showMessage("El Almacen seleccionado ya esta lleno", null, 1);
                }
                
            }else{
                getPop_cambioAlmacen().hide();
                sessionScopeBeanproducto.setCambioHecho(false);
                sessionScopeBeanproducto.setAlmacenEdit(sessionScopeBeanproducto.getIdalmacenSelec());
            }
        }
        
    public void insertarContenedor(ActionEvent event){
        ContenedoresBean bean = new ContenedoresBean();
        bean.setDescripcion(sessionScopeBeanproducto.getDescripcionNuevoContenedor());
        lN_SFContenedoresRemote.insertContenedor(bean);
        sessionScopeBeanproducto.setListaContenedores(this.llenarcontenedoresComno());
        Utils.addTargetMany(getContenedorInputBusqueda(),getInputnuevoTInsumoContenedor());
        getPopNuevoContenedor().hide();
    }
    
    public void insertarMedida(ActionEvent event){
        MedidaBean bean = new MedidaBean();
        bean.setDescripcion(sessionScopeBeanproducto.getDescripcionNuevaMedida());
        lN_SFMedidaRemote.insertMedida(bean);
        sessionScopeBeanproducto.setListaMedida(this.llenarmedidaComno());
        Utils.addTargetMany(getUmedidaInputBusqueda(),getInputnuevoTInsumoMedida());
        getPopnuevaMedida().hide();
    }
    
    public void mostrarpopAgregarTProducto(ActionEvent event){
        this.limpiarPOPNuevotProducto();
        
        Utils.showPopUpAFTER_START(getPop_addtProducto(), getBtnNuevotProducto());
    }
    
    public void agregarTInsumo(ActionEvent event){
        String descripcion = sessionScopeBeanproducto.getDescripcionNuevotProducto();
        String comentario = sessionScopeBeanproducto.getComentarioNuevotProducto();
        String tMinimo = sessionScopeBeanproducto.getTMinimaNuevotProducto();
        String tMaximo = sessionScopeBeanproducto.getTMaximaNuevotProducto();
        String tExpiracion = "0";
        int contenedor = sessionScopeBeanproducto.getContenedorNuevotProducto();
        int uMedida = sessionScopeBeanproducto.getUMedidaNuevotProducto();
        
        TipoproductoBean bean = new TipoproductoBean();
        bean.setDescripcion(descripcion);
        bean.setComentario(comentario);
        bean.setTemperatura_Minima(tMinimo);
        bean.setTemperatura_Maxima(tMaximo);
        
        BigDecimal tExp = new BigDecimal(tExpiracion);
        bean.setTiempo_Expiracion(tExp);
        
        bean.setIdContenedor(contenedor);
        bean.setIdUMedida(uMedida);
        
        lN_SFTipoproductoRemote.inserttProducto(bean);
        this.limpiarPOPNuevotProducto();
        sessionScopeBeanproducto.setListaTipoProducto(this.llenaTipoProducto());
        Utils.addTargetMany(getInputtInsumoBusqueda(),getInputtInsumoNuevo());
        getPop_addtProducto().hide();
        Utils.showMessage("Se Ingreso un nuevo Tipo de Producto", null, 2);
    }
    
    public void limpiarPOPNuevotProducto(){
        sessionScopeBeanproducto.setDescripcionNuevotProducto("");
        sessionScopeBeanproducto.setComentarioNuevotProducto("");
        sessionScopeBeanproducto.setTMinimaNuevotProducto("");
        sessionScopeBeanproducto.setTMaximaNuevotProducto("");
        sessionScopeBeanproducto.setTExpiracionNuevotProducto("");
        sessionScopeBeanproducto.setContenedorNuevotProducto(0);
        sessionScopeBeanproducto.setUMedidaNuevotProducto(0);
    }
    
    public void mostrarpopNuevoContenedor(ActionEvent event){
        sessionScopeBeanproducto.setDescripcionNuevoContenedor("");        
        Utils.showPopUpAFTER_START(getPopNuevoContenedor(), getBtnNuevoContenedor());
    }
    
    public void mostrarpopNuevaMedida(ActionEvent event){
        sessionScopeBeanproducto.setDescripcionNuevaMedida("");
        Utils.showPopUpAFTER_START(getPopnuevaMedida(), getBtnNuevaMedida());
    }
    
    public void prueba1(ActionEvent event){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();
        Date date1 = new Date();
        try{
            date = sdf.parse("2013-04-03");
            date1 = sdf.parse("2017-04-03");
        }catch(Exception e){}
        lN_SFTipoproductoRemote.getChartTipoProductoEmpresa(date, date1);
    }
    
    public void detalleTProducto(ValueChangeEvent valueChangeEvent){
        String idTipoProducto = valueChangeEvent.getNewValue().toString();
        TipoproductoBean bean = lN_SFTipoproductoRemote.getInfoTipoProducto(idTipoProducto);
        sessionScopeBeanproducto.setDetalleTProduco("UMedida: "+bean.getUMedida()+", Contenedor:"+bean.getContenedor()+"");
        Utils.addTarget(getLayoutDetalleTProducto());
    }

      public ArrayList llenarmedidaComno() {
          ArrayList medida = new ArrayList();
          List<MedidaBean> medidaBean = lN_SFMedidaRemote.allMedidas();
          for (MedidaBean m : medidaBean) {
              medida.add(new SelectItem(m.getIdMedida(),m.getDescripcion()));
          }
          
          return medida;
      }
      
      public ArrayList llenartipoProductoCombo() {
          ArrayList tipoInsumos = new ArrayList();
          List<TipoproductoBean> tipoInsumoBean = lN_SFTipoproductoRemote.getAllTipoProducto();
          for (TipoproductoBean ti : tipoInsumoBean) {
              tipoInsumos.add(new SelectItem(ti.getIdTipoProducto(),ti.getDescripcion()));
          }
          
          return tipoInsumos;
      }
      
      public ArrayList llenarcontenedoresComno() {
          ArrayList contenedores = new ArrayList();
          List<ContenedoresBean> contenedorBean = lN_SFContenedoresRemote.getContenedoresActivos();
          for (ContenedoresBean c : contenedorBean) {
              contenedores.add(new SelectItem(c.getIdContenedores(),c.getDescripcion()));
          }
          
          return contenedores;
      }
      
      public ArrayList llenarEstados() {
          ArrayList estados = new ArrayList();
          estados.add(new SelectItem(0,"Inactivo"));
          estados.add(new SelectItem(1,"Activo"));
          estados.add(new SelectItem(2,"Vendido"));
          estados.add(new SelectItem(3,"Reservado"));
          estados.add(new SelectItem(4,"Caducado"));
          estados.add(new SelectItem(5,"Malogrado"));
          
          return estados;
      }
    
     public ArrayList llenaEmpresa() {
        ArrayList empresas = new ArrayList();
        List<EmpresaBean> EmpresaBean = lN_SFEmpresaRemote.getAllEmpresas();
        for (EmpresaBean e : EmpresaBean) {
            empresas.add(new SelectItem(e.getIdEmpresa(),e.getRazonSocial()));
        }
        
        return empresas;
    } 
     public ArrayList llenaTipoProducto() {
        ArrayList tipoProductos = new ArrayList();
        List<TipoproductoBean> TipoProdutoBean = lN_SFTipoproductoRemote.getAllTipoProducto();
        for (TipoproductoBean e: TipoProdutoBean ) {
            tipoProductos.add(new SelectItem(e.getIdTipoProducto(),e.getDescripcion()));
        }
        
        return tipoProductos;
    } 
     
    public ArrayList llenarAlmacen(){
        ArrayList almacenes = new ArrayList();
        List<AlmacenBean> EmpresaBean = lN_SFAlmacenRemote.getAllAlmacenes1();
        for (AlmacenBean e : EmpresaBean) {
            almacenes.add(new SelectItem(e.getIdAlmacen(),e.getNombre()));
        } 
        return almacenes;
    }

    private static Context getInitialContext() throws NamingException {
        Hashtable env = new Hashtable();
        // WebLogic Server 10.x/12.x connection details
        env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        env.put(Context.PROVIDER_URL, "t3://127.0.0.1:7101");
        return new InitialContext(env);
    }
    public void setSessionScopeBeanproducto(bSessionScopeBeanproducto sessionScopeBeanproducto) {
        this.sessionScopeBeanproducto = sessionScopeBeanproducto;
    }

    public bSessionScopeBeanproducto getSessionScopeBeanproducto() {
        return sessionScopeBeanproducto;
    }

    public void setForm(RichForm form) {
        this.form = form;
    }

    public RichForm getForm() {
        return form;
    }

    public void setTb_Producto(RichTable tb_Producto) {
        this.tb_Producto = tb_Producto;
    }

    public RichTable getTb_Producto() {
        return tb_Producto;
    }

    public void setPa_Producto(RichPanelFormLayout pa_Producto) {
        this.pa_Producto = pa_Producto;
    }

    public RichPanelFormLayout getPa_Producto() {
        return pa_Producto;
    }

    public void setPf_Busqueda(RichPanelGridLayout pf_Busqueda) {
        this.pf_Busqueda = pf_Busqueda;
    }

    public RichPanelGridLayout getPf_Busqueda() {
        return pf_Busqueda;
    }

    public void setDt_fCreacionMin(RichInputDate dt_fCreacionMin) {
        this.dt_fCreacionMin = dt_fCreacionMin;
    }

    public RichInputDate getDt_fCreacionMin() {
        return dt_fCreacionMin;
    }

    public void setDt_fCreacionMax(RichInputDate dt_fCreacionMax) {
        this.dt_fCreacionMax = dt_fCreacionMax;
    }

    public RichInputDate getDt_fCreacionMax() {
        return dt_fCreacionMax;
    }

    public void setCalidadInputNuevo(RichSelectOneChoice calidadInputNuevo) {
        this.calidadInputNuevo = calidadInputNuevo;
    }

    public RichSelectOneChoice getCalidadInputNuevo() {
        return calidadInputNuevo;
    }

    public void setPop_addProducto(RichPopup pop_addProducto) {
        this.pop_addProducto = pop_addProducto;
    }

    public RichPopup getPop_addProducto() {
        return pop_addProducto;
    }

    public void setPop_editProducto(RichPopup pop_editProducto) {
        this.pop_editProducto = pop_editProducto;
    }

    public RichPopup getPop_editProducto() {
        return pop_editProducto;
    }

    public void setBtnNuevoProducto(RichButton btnNuevoProducto) {
        this.btnNuevoProducto = btnNuevoProducto;
    }

    public RichButton getBtnNuevoProducto() {
        return btnNuevoProducto;
    }

    public void setBtnEditar(RichButton btnEditar) {
        this.btnEditar = btnEditar;
    }

    public RichButton getBtnEditar() {
        return btnEditar;
    }

    public void setDirectorio(RichOutputLabel directorio) {
        this.directorio = directorio;
    }

    public RichOutputLabel getDirectorio() {
        return directorio;
    }

    public void setCantProductos(RichOutputLabel cantProductos) {
        this.cantProductos = cantProductos;
    }

    public RichOutputLabel getCantProductos() {
        return cantProductos;
    }

    public void setPop_cambioAlmacen(RichPopup pop_cambioAlmacen) {
        this.pop_cambioAlmacen = pop_cambioAlmacen;
    }

    public RichPopup getPop_cambioAlmacen() {
        return pop_cambioAlmacen;
    }

    public void setBtnCambioAlmacen(RichButton btnCambioAlmacen) {
        this.btnCambioAlmacen = btnCambioAlmacen;
    }

    public RichButton getBtnCambioAlmacen() {
        return btnCambioAlmacen;
    }

    public void setPop_addtProducto(RichPopup pop_addtProducto) {
        this.pop_addtProducto = pop_addtProducto;
    }

    public RichPopup getPop_addtProducto() {
        return pop_addtProducto;
    }

    public void setPopNuevoContenedor(RichPopup popNuevoContenedor) {
        this.popNuevoContenedor = popNuevoContenedor;
    }

    public RichPopup getPopNuevoContenedor() {
        return popNuevoContenedor;
    }

    public void setPopnuevaMedida(RichPopup popnuevaMedida) {
        this.popnuevaMedida = popnuevaMedida;
    }

    public RichPopup getPopnuevaMedida() {
        return popnuevaMedida;
    }

    public void setBtnNuevoContenedor(RichButton btnNuevoContenedor) {
        this.btnNuevoContenedor = btnNuevoContenedor;
    }

    public RichButton getBtnNuevoContenedor() {
        return btnNuevoContenedor;
    }

    public void setBtnNuevaMedida(RichButton btnNuevaMedida) {
        this.btnNuevaMedida = btnNuevaMedida;
    }

    public RichButton getBtnNuevaMedida() {
        return btnNuevaMedida;
    }

    public void setInputnuevoTInsumoMedida(RichSelectOneChoice inputnuevoTInsumoMedida) {
        this.inputnuevoTInsumoMedida = inputnuevoTInsumoMedida;
    }

    public RichSelectOneChoice getInputnuevoTInsumoMedida() {
        return inputnuevoTInsumoMedida;
    }

    public void setInputnuevoTInsumoContenedor(RichSelectOneChoice inputnuevoTInsumoContenedor) {
        this.inputnuevoTInsumoContenedor = inputnuevoTInsumoContenedor;
    }

    public RichSelectOneChoice getInputnuevoTInsumoContenedor() {
        return inputnuevoTInsumoContenedor;
    }

    public void setContenedorInputBusqueda(RichSelectOneChoice contenedorInputBusqueda) {
        this.contenedorInputBusqueda = contenedorInputBusqueda;
    }

    public RichSelectOneChoice getContenedorInputBusqueda() {
        return contenedorInputBusqueda;
    }

    public void setUmedidaInputBusqueda(RichSelectOneChoice umedidaInputBusqueda) {
        this.umedidaInputBusqueda = umedidaInputBusqueda;
    }

    public RichSelectOneChoice getUmedidaInputBusqueda() {
        return umedidaInputBusqueda;
    }

    public void setBtnNuevotProducto(RichButton btnNuevotProducto) {
        this.btnNuevotProducto = btnNuevotProducto;
    }

    public RichButton getBtnNuevotProducto() {
        return btnNuevotProducto;
    }

    public void setInputtInsumoBusqueda(RichSelectOneChoice inputtInsumoBusqueda) {
        this.inputtInsumoBusqueda = inputtInsumoBusqueda;
    }

    public RichSelectOneChoice getInputtInsumoBusqueda() {
        return inputtInsumoBusqueda;
    }

    public void setInputtInsumoNuevo(RichSelectOneChoice inputtInsumoNuevo) {
        this.inputtInsumoNuevo = inputtInsumoNuevo;
    }

    public RichSelectOneChoice getInputtInsumoNuevo() {
        return inputtInsumoNuevo;
    }

    public void setLayoutDetalleTProducto(RichPanelFormLayout layoutDetalleTProducto) {
        this.layoutDetalleTProducto = layoutDetalleTProducto;
    }

    public RichPanelFormLayout getLayoutDetalleTProducto() {
        return layoutDetalleTProducto;
    }
}
